<?php
/**
 * Date: 2018/10/29
 * Time: 21:37
 */

namespace module;

use think\Db;
use exception\ResponsableException;

class UserApi
{

    /****用户角色****/
    const  INSURER = 1;//保险人员
    const  RRCORDOR = 2;//待录人
    const  INSURANT = 3;//被保险人
    const  SALESMAN = 4;//业务员

    /**
     * @param string $uid 用户id
     * @return array
     */

    public static function getOtherList($uid)
    {

        $list = $otherArr = [];
        $otherIds = Db::table('user_code_r')->field('recoder_id')->where('user_id', $uid)->select();
        if (!$otherIds) {
            return $list;
        }
        foreach ($otherIds as $v) {
            array_push($otherArr, $v['recoder_id']);
        }
        $list = Db::table('user_info')->field('ui_id as recordor_id,username,mobile,recoder_type')->where('ui_id', 'in', $otherArr)->select();
        if(!$list) return $list;
        foreach ($list as $k=> $v){
          $info =Db::table('recorder_type')->where('id',$v['recoder_type'])->find();
            $list[$k]['recoder_name']=$info['name']?$info['name']:'';
        }
        return $list;

    }

    /**
     * @param string $uid 用户id
     * @param string $mobile 代录人手机号
     * @param string $realName 代录人手机号
     * @param string $recoder_type 代录人类型
     * @return boolean
     */
    public static function bindOther($uid, $mobile, $realName, $recoder_type,$card_num,$rem_comname,$rem_link_name,$rem_link_phone)
    {


        $info = Db::table('user_code_r')->where('mobile', $mobile)->find();
        if ($info) {
            throw new ResponsableException('请不要重复添加,等待审核');
        }
        $userInfo = Db::table('user_info')->where('mobile', $mobile)->find();
        if ($userInfo) {
            throw new ResponsableException('代录人已存在');
        }
        $id = Db::table('user_info')->insertGetId([
            'role_id' => 2,
            'username' => $realName,
            'mobile' => $mobile,
            'recoder_type' => $recoder_type,
            'card_num'=>$card_num,
            'company_name'=>$recoder_type,
            'created_at' => date('Y-m-d H:i:s'),
        ]);
       return  $info = Db::table('user_code_r')->insert([
            'user_id' => $uid,
            'recoder_id' => $id,
            'mobile' => $mobile,
           'rem_comname'=>$rem_comname,
           'rem_link_name'=>$rem_link_name,
           'rem_link_phone'=>$rem_link_phone,
           'created_at' => date('Y-m-d H:i:s'),
        ]);


       // return Db::table('user_code_r')->insert(['user_id' => $uid, 'recoder_id' => $info['ui_id']]);


    }

    /**
     * @param string $uid 用户id
     * @param string $recordor_id代录人id
     * @return boolean
     */
    public static function unbindOther($uid, $recordor_id)
    {
        $info = Db::table('user_code_r')->where('user_id', $uid)->where('recoder_id', $recordor_id)->find();
        if (!$info) {
            throw new ResponsableException('没有绑定关系');
        }
        return Db::table('user_code_r')->where(['user_id' => $uid, 'recoder_id' => $recordor_id])->delete();
    }

    /**
     * 根据用户id获取用户个人信息
     * @param string $uid 用户id
     * @return array
     */
    public static function getUserInfoByUid($uid, $filed = ['*'])
    {

        $info = Db::table('user_info')->field($filed)->where('ui_id', $uid)->where('delete_ts', 0)->find();
        return $info ? $info : [];

    }
    /**
     * 根据条件获取用户信息
     * @param array $where 查询条件
     * @return array
     */
    public static function getUserInfoByWhere($where, $filed = [])
    {

        $info = Db::table('user_info')->field($filed)->where($where)->where('delete_ts', 0)->find();
        return $info ? $info : [];

    }

    /**
     * 根据用户手机号获取用户个人信息
     * @param string $uid 用户id
     * @return array
     */
    public static function getUserInfoByPhone($phone)
    {

        $info = Db::table('user_info')->where('mobile', $phone)->where('delete_ts', 0)->where('status', 1)->find();
        return $info ? $info : [];

    }

    /**
     * 根据用户手机号获取用户个人信息
     * @param string $uid 用户id
     * @return array
     */
    public static function getUserInfoByPhoneToSuss($phone)
    {

        $info = Db::table('user_info')->where('mobile', $phone)->where('delete_ts', 0)->where('status', 2)->find();
        return $info ? $info : [];

    }

    /**
     * 根据用户手机号获取用户个人信息
     * @param string $uid 用户id
     * @return array
     */
    public static function getUserByPhone($phone)
    {

        $info = Db::table('user_info')->where('mobile', $phone)->where('delete_ts', 0)->find();
        return $info ? $info : [];

    }


    /**
     * 根据用户token获取用户个人信息
     * @param string $uid 用户id
     * @return array
     */
    public static function getUserInfoByToken($token)
    {

        $info = Db::table('user_info')->where('token', $token)->where('delete_ts', 0)->where('status', 2)->find();
        return $info ? $info : [];

    }

    /**
     * 根据条件更新
     * @param array $where 更信条件
     * @param array $update 更新数组
     * @return boolean
     */
    public static function updateUser($where, $update)
    {

        return Db::table('user_info')->where($where)->where('delete_ts', 0)->update($update);

    }


    public function update_recorder()
    {
        
    }
}